package com.xhwl.centiotdata.integration.parkingguidance;


import com.xhwl.centiotdata.integrator.parkingguidance.ParkingGuidanceRequestsDTO;
import com.xhwl.centiotdata.integrator.parkingguidance.ParkingGuidanceResponseDTO;
import com.xhwl.common.dto.cent.device.DeviceDTO;
import com.xhwl.common.exception.BusinessException;

import java.util.List;

/**
 * Falcon.cao @Copyright (C), 2022, 兴海物联
 * Date: 2022/10/4 16:40
 * Description: 车场引导系统处理
 */
public interface ParkingGuidanceSystemHandler {

    /**
     * 获取车场区域列表
     *
     * @param config  配置实体类
     * @param request 请求实体类
     */
    default List<ParkingGuidanceResponseDTO> onListingParkerFloor(ParkingGuidanceIntegrationConfig config, ParkingGuidanceRequestsDTO request) {
        throw new BusinessException("该供应商未实现此功能");
    }

    /**
     * 获取车场区域列表
     *
     * @param config  配置实体类
     * @param request 请求实体类
     */
    default List<ParkingGuidanceResponseDTO> onListingParkingArea(ParkingGuidanceIntegrationConfig config, ParkingGuidanceRequestsDTO request) {
        throw new BusinessException("该供应商未实现此功能");
    }

    /**
     * 查询车场地磁状态
     *
     * @param config  配置实体类
     * @param request 请求实体类
     */
    default List<ParkingGuidanceResponseDTO> onListingSpaceStatus(ParkingGuidanceIntegrationConfig config, ParkingGuidanceRequestsDTO request) {
        throw new BusinessException("该供应商未实现此功能");
    }

    /**
     * 获取车场空闲数量
     *
     * @param config  配置实体类
     * @param request 请求实体类
     */
    default List<ParkingGuidanceResponseDTO> onListSpaceFreeCount(ParkingGuidanceIntegrationConfig config, ParkingGuidanceRequestsDTO request) {
        throw new BusinessException("该供应商未实现此功能");
    }

    /**
     * 查询车位地磁状态
     *
     * @param config  配置实体类
     * @param request 请求实体类
     */
    default ParkingGuidanceResponseDTO onGettingSpaceStatus(ParkingGuidanceIntegrationConfig config, ParkingGuidanceRequestsDTO request) {
        throw new BusinessException("该供应商未实现此功能");
    }

    /**
     * 将车位信息存储为设备信息，便于完成蒙牛车辆调度的需求
     */
    default List<DeviceDTO> onGetSpaceForDevice(ParkingGuidanceIntegrationConfig config){
        throw new BusinessException("该供应商未实现此功能");
    }
}
